//
//  NSString+YCTools.h
//  Pods
//
//  Created by Apple on 2022/11/1.
//

#import <Foundation/Foundation.h>
#import <UIKit/UIKit.h>
NS_ASSUME_NONNULL_BEGIN

@interface NSString (YCTools)

///是否包含Emoji
@property (nonatomic, assign, readonly, getter=isContainEmoji) BOOL containEmoji;

///是否包含中文
@property (nonatomic, assign, readonly, getter=isContainChinese) BOOL containChinese;

///是否包含空格
@property (nonatomic, assign, readonly, getter=isContainBlank) BOOL containBlank;


/// 根据文字大小最大高度计算字符串所需宽度
/// - Parameters:
///   - font: 文字大小
///   - height: 文字最大高度
- (CGFloat)widthForStringWithFont:(UIFont *)font maxHeight:(CGFloat)height;

/// 根据文字和最大宽度计算字符串所需高度
/// - Parameters:
///   - font: 文字大小
///   - width: 最大宽度
- (CGFloat)heightForStringWithFont:(UIFont *)font maxWidth:(CGFloat)width;

/// 根据文字、间隙、最大宽度计算字符串所需高度
/// - Parameters:
///   - font: 文字大小
///   - lineSpacing: 间隙
///   - width: 最大宽度
- (CGFloat)heightForStringWithFont:(UIFont *)font lineSpacing:(CGFloat)lineSpacing maxWidth:(CGFloat)width;

/// 转成url
- (NSURL *)stringToUrl;

/// 转data
- (NSData *)stringToData;

/// json字符串转字典
- (NSDictionary *)stringToDictionary;

/// json字符串转数组
- (NSArray *)stringToArray;

/// 字符串转json
- (id)stringToJson;

/// 字符串是否为空
/// - Parameter targetStr: 验证的字符串
+ (BOOL)isNil:(NSString*)targetStr;
- (BOOL)isNil;

/// 是否包含字符串
/// - Parameter subStr: 包含的字符串
- (BOOL)contains:(NSString *)subStr;

/// 是否包含字符串，忽略大小写
/// - Parameters:
///   - subStr: 包含的字符串
///   - isIgnore: 是否忽略大小写
- (BOOL)contains:(NSString *)subStr igonoreCase:(BOOL)isIgnore;

/// 是否全数字
- (BOOL)isAllNumbers;

/// 判断密码(字母加数字)
- (BOOL)isLettersAndNumber;

- (NSNumber *)getKRateByBitString:(BOOL)isBit;

/// 是否为手机号
- (BOOL)isPhoneNumber;

//手机号码中间添加空格
- (NSString *)numberSuitEmpty;

///身份证判断
- (BOOL)checkUserID;

//手机号码中间用*代替
- (NSString *)numberSuitScanf;

- (NSString *)sha1;

//获取字符串的高
- (CGSize)sizeWithFont:(UIFont *)font inSize:(CGSize)size;
//获取字符串的宽度
- (CGFloat)widthForFont:(UIFont *)font;

//是否包含某个字符串
- (BOOL)isRangeOfString:(NSString *)string;

- (NSString *)stringByPaddingToFixedWidth:(NSUInteger)length withString:(NSString *)padString startingAtIndex:(NSUInteger)padIndex;

/// 大小写英文、数字、九宫格中文、全键盘中文、emoji表情
- (BOOL)stringShouldMatchAlphaNumChinese;

//返回四位间隔的string
- (NSString *)returnsFourDigitString;

//格式化手机银行卡号  @[@(3),@(4)];
- (NSString*)formatedNumberWithArrNumber:(NSArray *)blankArr;

//将数字字符串除以
- (NSString *)ToDivideByWithTimes:(CGFloat)times;

/// 将数字字符串乘以
- (NSString *)ToMultiplyByWithTimes:(CGFloat)times;

/// 去除特殊字符
- (NSString *)cleanSpecialCharacters;

/// 身份证****
- (NSString *)numberSuitidCardScanf;

/// 用户名字加****
- (NSString *)userNameSuitid;

/**
*  密码为8-16位非连续或重复的字母、数字
*/
- (BOOL)passwordValidate;
/**
*  城市匹配，例如 福州市，cityCode：350100
     中国城乡代码格式详解
     第1-2位表示省（自治区、直辖市、特别行政区）。
     第3-4位表示市（地级市、自治州、盟及国家直辖市所属市辖区和县的汇总码）。其中，01-20，51-70表示省直辖市；21-50表示地区（自治州、盟）。
     第5-6位表示县（市辖区、县级市、旗）。01-18表示市辖区或地区（自治州、盟）辖县级市；21-80表示县（旗）；81-99表示省直辖县级市。
     第7-9位表示镇（乡镇、街道办事处、乡、特殊区、特殊农场、特殊公司）。
     第9-12位表示村（农村村委会、社区居委会、虚拟社区、特殊团部、特殊连）。
     例如代码：320508019044，32代表江苏省，05代表苏州市，08代表姑苏区，019代表金阊街道，044代表养育巷社区居委会。
*/
- (BOOL)matchCityCode:(NSString *)cityCode;

@end

NS_ASSUME_NONNULL_END
